<?php

namespace App\Http\Controllers\Landscaping;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Landscaping\ParkProtect;
use App\Models\Landscaping\Landscaping;
use Illuminate\Database\QueryException;
use App\Http\Requests\Landscaping\ParkProtectRequest;

/**
 * @group 基础信息管理->绿化->园林工养护内容预设管理
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */

class ParkProtectController extends Controller
{
    /**
     * 园林工养护内容预设查看列表
     *
     * @bodyParam vegetation_type string 除草类型
     * @bodyParam park_name string 园林名称
     * @bodyParam park_number string 园林编号
     * @bodyParam begin_time datetime 作业开始时间
     * @bodyParam end_time datetime 作业结束时间
     * @bodyParam protect_principal_id int 负责人id 外键 员工表
     *
     * @queryParam landscaping_id int 园林ID 外键 园林表
     * @queryParam protect_month int 作业月份
     * @queryParam protect_content string 作业内容
     * @queryParam protect_type string 除草类型
     * @queryParam protect_number int 植物数量
     * @queryParam protect_units string 单位
     * @queryParam begin_time datetime 作业开始时间
     * @queryParam end_time datetime 作业结束时间
     * @queryParam protect_job string 作业种类
     * @queryParam protect_principal_id int 负责人id 外键 员工表
     * @queryParam protect_remark string 完成度
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $parkProtect = new ParkProtect;
        $data = $parkProtect->getList($request);
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 添加园林工养护内容预设
     *
     * @bodyParam landscaping_id int 园林ID 外键 园林表
     * @bodyParam protect_month int 作业月份
     * @bodyParam protect_content string 作业内容
     * @bodyParam protect_type string 除草类型
     * @bodyParam protect_number int 植物数量
     * @bodyParam protect_units string 单位
     * @bodyParam begin_time datetime 作业开始时间
     * @bodyParam end_time datetime 作业结束时间
     * @bodyParam protect_job string 作业种类
     * @bodyParam protect_principal_id int 负责人id 外键 员工表
     * @bodyParam protect_remark string 完成度
     *
     * @queryParam landscaping_id int 园林ID 外键 园林表
     * @queryParam protect_month int 作业月份
     * @queryParam protect_content string 作业内容
     * @queryParam protect_type string 除草类型
     * @queryParam protect_number int 植物数量
     * @queryParam protect_units string 单位
     * @queryParam begin_time datetime 作业开始时间
     * @queryParam end_time datetime 作业结束时间
     * @queryParam protect_job string 作业种类
     * @queryParam protect_principal_id int 负责人id 外键 员工表
     * @queryParam protect_remark string 完成度
     *
     * @return \Illuminate\Http\Response
     */
    public function store(ParkProtectRequest $request)
    {
        try {
            $data = ParkProtect::create($request->all());
            return response()->json(encodeMsg($data,201));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '养护内容添加失败!'],400));
        }
    }

    /**
     * 查看园林工养护内容预设
     *
     * @bodyParam id int required  方案ID
     *
     * @queryParam landscaping_id int 园林ID 外键 园林表
     * @queryParam protect_month int 作业月份
     * @queryParam protect_content string 作业内容
     * @queryParam protect_type string 除草类型
     * @queryParam protect_number int 植物数量
     * @queryParam protect_units string 单位
     * @queryParam begin_time datetime 作业开始时间
     * @queryParam end_time datetime 作业结束时间
     * @queryParam protect_job string 作业种类
     * @queryParam protect_principal_id int 负责人id 外键 员工表
     * @queryParam protect_remark string 完成度
     *
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $data = ParkProtect::find($id);
        if($data == []) {
            return response()->json(encodeMsg(["message" => "没有该养护内容信息!"], 404));
        } else {
            return response()->json(encodeMsg($data,200));
        }
    }

    /**
     * 修改园林工养护内容预设
     *
     * @bodyParam landscaping_id int 园林ID 外键 园林表
     * @bodyParam protect_month int 作业月份
     * @bodyParam protect_content string 作业内容
     * @bodyParam protect_type string 除草类型
     * @bodyParam protect_number int 植物数量
     * @bodyParam protect_units string 单位
     * @bodyParam begin_time datetime 作业开始时间
     * @bodyParam end_time datetime 作业结束时间
     * @bodyParam protect_job string 作业种类
     * @bodyParam protect_principal_id int 负责人id 外键 员工表
     * @bodyParam protect_remark string 完成度
     *
     * @queryParam landscaping_id int 园林ID 外键 园林表
     * @queryParam protect_month int 作业月份
     * @queryParam protect_content string 作业内容
     * @queryParam protect_type string 除草类型
     * @queryParam protect_number int 植物数量
     * @queryParam protect_units string 单位
     * @queryParam begin_time datetime 作业开始时间
     * @queryParam end_time datetime 作业结束时间
     * @queryParam protect_job string 作业种类
     * @queryParam protect_principal_id int 负责人id 外键 员工表
     * @queryParam protect_remark string 完成度
     *
     * @return \Illuminate\Http\Response
     */
    public function update(ParkProtectRequest $request, $id)
    {
        $parkProtect = ParkProtect::find($id);
        if($parkProtect == []) {
            return response()->json(encodeMsg(["message" => "没有该养护内容信息!"], 404));
        }
        try {
            $parkProtect->update($request->all());
            return response()->json(encodeMsg($parkProtect,200));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '养护内容修改失败!'],400));
        }
    }

    /**
     * 删除园林工养护内容预设
     *
     * @bodyParam id int required 养护内容ID
     * @response 204 {
     *   "message": "养护内容删除成功"
     * }
     *
     *
     * @response 404 {
     *  "message": "没有该养护内容信息"
     * }
     */
    public function destroy($id)
    {
        $parkProtect = ParkProtect::find($id);
        if($parkProtect == []) {
            return response()->json(encodeMsg(["message" => "没有该养护内容信息!"], 404));
        }
        if($parkProtect->delete()) {
            return response()->json(encodeMsg(["message" => "养护内容删除成功!"], 204));
        } else {
            return response()->json(encodeMsg(["message" => "养护内容删除失败!"], 400));
        }
    }

    /**
     * 方案批量删除
     *
     * @bodyParam ids int required id集合字符串[格式：ids=1,2,3]
     * @response 204 {
     *   "message": "方案删除成功"
     * }
     *
     *
     */
    public function delete($ids)
    {
        $listId = explode(',', $ids);
        ParkProtect::whereIn('id',$listId)->delete();
        return response()->json(encodeMsg(["message" => "养护内容删除成功!"], 400));
    }


}
